home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0257 / demo.exe / EXEC.DEM < prev    next >
Text File  |  1992-02-16  |  5KB  |  187 lines

  1. ; ----------------------------
  2. ; EXEC.DEM     - Demoprogramm für die Routinen aus EXEC.BIB
  3. ;                (für den A86)
  4. ;
  5. ;                (c) Bernd Schemmer 1990 - 1992
  6. ;                Letzter Update: 15.02.1992
  7. ;
  8. ; Übersetzen:
  9. ;  A86 EXEC.DEM DEMOS.INC TO EXEC.COM
  10. ;
  11. ; Hinweis: Die Environment-Variable 'A86' muß den Dateinamen 'MACROS.MAC'
  12. ;          enthalten und die .LIB- und .BIB-Dateien müssen über die Datei
  13. ;          A86.LIB erreichbar sein.
  14. ;
  15. ; ---------------------------
  16.  
  17.          jmp start            ; Daten überspringen
  18.  
  19. logo  db CR,LF
  20.       db CR,LF
  21.       db 'EXEC.DEM  - Demoprogramm für die Routinen aus EXEC.BIB'
  22.       db CR,LF
  23.       db '------------------------------------------------------'
  24.       db CR,LF
  25.       db CR,LF
  26.       db 'Bitte geben Sie den Namen des auszuführenden Programmes an: '
  27.       db CR,LF
  28.       db '(Das Programm muß im akt. Directory oder in einem der in der'
  29.       db CR,LF
  30.       db ' Environment-Variable PATH verzeichneten Directorys zu finden'
  31.       db CR,LF
  32.       db '  sein.)'
  33.       db CR,LF
  34.       db 'Name: '
  35. GETLENGTH logo
  36.  
  37. msg1  db CR,LF
  38.       db 'Bitte geben Sie die Parameter für das Programm oder <RETURN> für kein'
  39.       db CR,LF
  40.       db 'Parameter ein: '
  41.       db CR,LF
  42. GETLENGTH msg1
  43.  
  44. msg10  db CR,LF
  45.        db CR,LF
  46.        db 'Auszuführendes Programm:'
  47.        db CR,LF
  48. GETLENGTH msg10
  49.  
  50. msg11  db CR,LF
  51.        db '-----------------------------------------------------'
  52.        db CR,LF
  53.        db CR,LF
  54. GETLENGTH msg11
  55.  
  56. error0 db CR,LF
  57.        db 'Fehler: Zuwenig Speicher vorhanden!'
  58.        db CR,LF
  59. GETLENGTH error0
  60.  
  61. error1 db CR,LF
  62.        db '-----------------------------------------------------'
  63.        db CR,LF
  64.        db 'Fehler '
  65. err1   db '??? bei der Programm-Ausführung!'
  66.        db CR,LF
  67. GETLENGTH error1
  68.  
  69. error2 db CR,LF
  70.        db 'Angegebenes Programm nicht gefunden!'
  71.        db CR,LF
  72. GETLENGTH error2
  73.  
  74. msg2   db CR,LF
  75.        db '-----------------------------------------------------'
  76.        db CR,LF
  77.        db 'Ausführung okay, Programm endete mit Errorlevel '
  78. ret1   db '??? und Returncode '
  79. ret2   db '???'
  80.        db CR,LF
  81. GETLENGTH msg2
  82.  
  83. msg3   db CR,LF
  84.        db 'Nochmal? '
  85. GETLENGTH msg3
  86.  
  87.           db 65               ; max. Stringlänge (für Funktion 0Ah des Int 21h)
  88. _progname db 129 dup 0        ; Speicher für den Programm-Namen
  89.  
  90.           db 128              ; max. Stringlänge (für Funktion 0Ah des Int 21h)
  91. progparms db 129 dup 0        ; Speicher für die Parameter
  92.  
  93. start:
  94.          call ShowLogo        ; Logo ausgeben und Speicherblock verkleinern
  95.  
  96. start1:
  97.                               ; Programm-Namen lesen
  98.          mov dx,offset _progname-1
  99.          mov ah,0Ah
  100.          int 021h
  101.  
  102.                               ; Programm-Namen vervollständigen
  103.          mov si,offset _progname
  104.          call SearcHFile
  105.          jnc >l1              ; Programm gefunden
  106.  
  107.                               ; versuchen wir's indem wir '.COM' anhängen
  108.          mov si,offset _progname
  109.          mov bl,[si]
  110.          xor bh,bh            ; BX = Länge des Namens
  111.          mov w[si+bx+1],'C.'
  112.          mov w[si+bx+3],'MO'
  113.          add b[si],4
  114.  
  115.          call SearchFile
  116.          jnc >l1
  117.                               ; versuchen wir's indem wir '.EXE' anhängen
  118.          mov si,offset _progname
  119.          mov bl,[si]
  120.          xor bh,bh            ; BX = Länge des Namens
  121.          mov w[si+bx-3],'E.'
  122.          mov w[si+bx-1],'EX'
  123.          call SearchFile
  124.          jnc >l1
  125.                               ; Fehler: Programm nicht gefunden
  126.          WRITE_STRING error2
  127.          jmp NextTry
  128.  
  129. l1:
  130.          WRITE_STRING msg1
  131.                               ; Parameter lesen
  132.          mov dx,offset progparms-1
  133.          mov ah,0Ah
  134.          int 021h
  135.  
  136.          WRITE_STRING msg10
  137.                               ; konvertierten Programm-Namen ausgeben
  138.          mov dx,offset _progname+1
  139.          mov cl,[_progname]
  140.          xor ch,ch
  141.          mov bx,01h
  142.          mov ah,040h
  143.          int 021h
  144.  
  145.          WRITE_STRING msg11
  146.  
  147.                               ; Programm ausführen
  148.          mov si,offset _progname
  149.          mov bx,offset progparms
  150.          call ExecProgramm
  151.          jnc >l1
  152.                               ; Fehler bei der Ausführung!
  153.          mov di,offset err1
  154.          call Konvert_AL_To_Dezstring
  155.          WRITE_STRING error1
  156.          jmp NextTry
  157. l1:
  158.          push ax
  159.          mov di,offset ret1
  160.          call Konvert_AL_To_Dezstring
  161.          pop ax
  162.          xchg ah,al
  163.          mov di,offset ret2
  164.          call Konvert_AL_To_Dezstring
  165.          WRITE_STRING msg2
  166.  
  167. NextTry:
  168.  
  169.          WRITE_STRING msg3
  170.          mov ah,08h
  171.          int 021h
  172.  
  173.          cmp al,CR
  174.          je >l1
  175.          cmp al,'j'
  176.          je >l1
  177.          cmp al,'J'
  178.          jne Ende
  179.  
  180. l1:
  181.          WRITE_STRING logo
  182.          jmp Start1
  183.  
  184. Ende:
  185.          EndProcess 0
  186.  
  187.